package constants;

/**
 * This enumeration is a central point of reference to the various
 * events that are passed through the EventBus. The events listed here
 * should be used when possible unless otherwise specified.
 */

public enum Events {

    /**
     * A new game starts
     */
    NEWGAME,

    /**
     * The die is thrown
     */
    DICETHROW,

    /**
     * Should be published after DICETHROW so that the view can do appropriate animations
     */
    DICETHROWUPDATE,

    /**
     * A player moves one of his pieces
     */
    MOVE,

    /**
     * Saves the ongoing game
     */
    SAVE_GAME,

    /**
     * Loads a game
     */
    LOAD_GAME,

    /**
     * Publish this together with any message to have it displayed on screen.
     */
    ERROR,

    /**
     * Changes a player's name
     */
    PLAYERNAME,

    /**
     * Should be published each time any event occurs (this will make the view update itself)
     */
    UPDATE,

    /**
     * The rules change. (Unused at this time, issue44).
     */
    CHANGE_RULES,

    /**
     * The turn timer ticks (Normally published once every second)
     */
    TIME,

    /**
     * A battle breaks out between two Players
     */
    BATTLE,

    /**
     * Player responds to battle
     */
    BATTLE_ANS,

    /**
     * Toggles music ON/OFF (Currently unused)
     * @deprecated
     */
    MUSIC,

    /**
     * Toggles sfx ON/OFF
     */
    SFX,

    /**
     * A player has won
     */
    WIN,

    /**
     * The game ends
     */
    END_GAME
}
